package com.vhall.component.service.exam;

import com.vhall.component.entity.exam.vo.*;
import com.vhall.component.entity.page.vo.PageVO;
import com.vhall.component.plugin.common.support.Token;
import com.vhall.component.plugin.common.support.VssToken;

import java.util.Map;

/**
 * @author song.dong
 * @date 2021-07-16 18:33
 */
public interface V2ExamService {

    /**
     * 房间试卷详情
     *
     * @param vo 考卷创建参数
     * @return paper info
     */
    ExamPublishInfoRspVo publishInfo(ExamVo vo);

    /**
     * 发布试卷
     *
     * @param accountId 账户id
     * @param vo        试卷VO
     * @return
     */
    Boolean publish(Integer accountId, ExamVo vo);

    /**
     * 提交答案
     *
     * @param vo 考卷创建参数
     * @return 返回值
     */
    Boolean answer(ExamAnswerReqVo vo);

    /**
     * 试卷及答卷数量-根据room_id,account_id
     *
     * @param vo 试卷及答卷数量-根据room_id,account_id
     * @return 返回值
     */
    ExamGetNumRspVo getNum(ExamGetNumReqVo vo);

    /**
     * 试卷-试卷-取消发布(主播)
     *
     * @param vo 参数
     * @return 返回值
     */
    Boolean cancelPublish(ExamVo vo);


    Map<String, Boolean> checkSurvey(Token token, ExamVo vo);

    Boolean gradeCheck(ExamVo reqVO, Integer accountId);

    PageVO<AnsweredExamResVo> answeredExam(AnsweredExamReqVo vo);

    Boolean gradePush(ExamVo reqVO, Integer accountId);

    /**
     * 考试结束
     *
     * @param accountId 用户Id
     * @param vo        vo
     * @return true|false
     */
    Boolean examFinish(Integer accountId, ExamVo vo);

    /**
     * 判卷完成
     *
     * @param token vss token
     * @param vo    vo
     * @return true|false
     */
    Boolean setGrade(VssToken token, ExamVo vo);
}
